package net.zjitc.list.dao;

import net.zjitc.list.domain.User;
import net.zjitc.list.utils.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

/**
 * @Author Administrator
 * @Date 2020/6/12 10:19
 * 具体实现类
 * 利用JDBC操作数据库：Druid+JdbcTemplate
 * 1.获取数据库连接
 *  通过Druid
 * 2.执行sql语句
 * 3.若是查询，执行结果要封装到容器中（对象或集合）
 **/
public class UserDaoImpl implements UserDao{
    JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
    String sql="";
    @Override
    public List<User> findAll(){
        sql="select * from user2";
        /*查询，结果是单条记录，queryForObject（）
        * 查询结果是多条记录，query（）
        * 参数1：sql
        * 参数2：Bean.....自动把表中的记录封装到容器中（对象或集合）
        * 参数3：给问号赋值
        * 注意：查询结果若是空，会报错，所以加上try..catch*/
        try {
            List<User> list = template.query(sql,new BeanPropertyRowMapper<User>(User.class));
            return list;
        }catch (Exception e){
            System.out.println(e.getMessage());
            return null;
        }

    }

    @Override
    public int add(User user) {
        /**/
        User u = findByName(user.getName());
        if (u==null){
            /*用户名不重复，可以添加*/
            sql="insert into user2 values(null,?,?,?,?,?,?)";
            template.update(sql,user.getName(),user.getGender(),user.getAge(),
                    user.getAddress(),user.getQq(),user.getEmail());

        }else {
            /*用户名重复*/
            return -1;
        }
        return 0;
    }

    @Override
    public User findByName(String name) {
        sql="select * from user2 where name=?";
        try {
            User user = template.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),name);
            return user;
        }catch (Exception e){
            System.out.println(e.getMessage());
            return null;
        }

    }

    @Override
    public void delete(int id) {
        sql="delete from user2 where id=?";
        template.update(sql,id);
    }

    @Override
    public User findByUser(int id) {
        sql="select * from user2 where id=? ";
        try {
            return template.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),id);
        }catch (Exception e){
            System.out.println(e.getMessage());
            return null;
        }
    }

    @Override
    public void update(User user) {
        sql="update user2 set name=?,gender=?,age=?,address=?,qq=?,email=? where id=?";
        template.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),
                         user.getQq(),user.getEmail(),user.getId());
    }
}
